package cn.tedu.csmall.product.service.impl;

import cn.tedu.csmall.product.ex.ServiceException;
import cn.tedu.csmall.product.mapper.AttributeTemplateMapper;
import cn.tedu.csmall.product.pojo.dto.AttributeTemplateNewDto;
import cn.tedu.csmall.product.pojo.dto.AttributeTemplateUpdateDto;
import cn.tedu.csmall.product.pojo.entity.PmsAttributeTemplate;
import cn.tedu.csmall.product.pojo.vo.*;
import cn.tedu.csmall.product.service.AttributeTemplateService;
import cn.tedu.csmall.product.web.ServiceCode;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import javax.validation.Valid;
import java.util.List;

@Service
public class AttributeTemplateServiceImpl implements AttributeTemplateService {
    @Autowired
    AttributeTemplateMapper mapper;


    @Override
    public void addNew(AttributeTemplateNewDto attributeTemplate) {
        int countByName = mapper.countByName(attributeTemplate.getName());
        if (countByName != 0){
            String message = "添加模板失败，模板名称已经被占用！";
            throw new ServiceException(ServiceCode.ERROR_CONFLICT,message);
        }

        PmsAttributeTemplate pmsAttributeTemplate = new PmsAttributeTemplate();
        BeanUtils.copyProperties(attributeTemplate,pmsAttributeTemplate);
        mapper.insert(pmsAttributeTemplate);
    }

    @Override
    public void updateInfoById(Long id, @Valid AttributeTemplateUpdateDto attributeTemplate) {
        int count = mapper.countByName(attributeTemplate.getName());
        if (count > 0){
            String message = "修改模板失败，模板名称已经被占用！";
            throw new ServiceException(ServiceCode.ERROR_CONFLICT,message);
        }

        AttributeTemplateStandardVo pmsAttributeTemplateStandardVo = mapper.selectById(id);
        if (pmsAttributeTemplateStandardVo == null) {
            String message = "修改模板失败，尝试修改的模板数据不存在！";
            throw new ServiceException(ServiceCode.ERROR_CONFLICT,message);
        }

        PmsAttributeTemplate pmsAttributeTemplate = new PmsAttributeTemplate();
        BeanUtils.copyProperties(attributeTemplate,pmsAttributeTemplate);
        pmsAttributeTemplate.setId(id);
        mapper.update(pmsAttributeTemplate);
    }

    @Override
    public void delete(Long id) {
        AttributeTemplateStandardVo pmsAttributeTemplateStandardVo = mapper.selectById(id);
        if (pmsAttributeTemplateStandardVo == null) {
            String message = "删除模板失败，尝试删除的模板数据不存在！";
            throw new ServiceException(ServiceCode.ERROR_CONFLICT,message);
        }mapper.deleteById(id);
    }

    @Override
    public List<AttributeTemplateListItemVo> list() {
        List<AttributeTemplateListItemVo> list = mapper.list();
        return list;
    }

    @Override
    public AttributeTemplateStandardVo getStandardById(Long id) {
        AttributeTemplateStandardVo attributeTemplateStandardVo = mapper.selectById(id);
        return attributeTemplateStandardVo;
    }

}
